[okyungjin] WEEK 02 solutions#2683
Conversation
📊 okyungjin 님의 학습 현황이번 주 제출 문제
누적 학습 요약
문제 풀이 현황
🤖 이 댓글은 GitHub App을 통해 자동으로 작성되었습니다. 🔢 API 사용량 (gpt-5-nano)
|
| curr = prev2 + prev1 # 현재 계단 | ||
| prev2 = prev1 | ||
| prev1 = curr |
There was a problem hiding this comment.
| curr = prev2 + prev1 # 현재 계단 | |
| prev2 = prev1 | |
| prev1 = curr | |
| prev2, prev1 = prev1, prev2 + prev1 |
파이썬이니까 동시 할당을 활용하는 방법도 있을 것 같아요.
There was a problem hiding this comment.
감사합니다! 개인적으로 curr로 작성해주는게 가독성이 더 좋다고 생각해서 풀어서 작성했습니다.
| prev2 = 1 # 전전칸 까지의 경우의 수 | ||
| prev1 = 2 # 전칸 까지의 경우의 수 | ||
|
|
||
| for _ in range(2, n): |
There was a problem hiding this comment.
개인적으로는 3번째 계단에서 시작하는 거면, 3이라고 명시하는 걸 더 선호해서요. 이렇게도 쓸 수 있을 것 같아요.
| for _ in range(2, n): | |
| for _ in range(3, n+1): |
| if len(s) != len(t): | ||
| return False | ||
|
|
||
| counter = Counter(s) | ||
|
|
||
| for char in t: | ||
| if counter[char] >= 1: | ||
| counter[char] -= 1 | ||
| else: | ||
| return False | ||
|
|
||
| return True |
There was a problem hiding this comment.
Counter 라는 것은 처음 보는데 아주 편리하게 쓸 수 있네요. 어차피 Counter 객체를 쓴다면 비교 연산으로 더 간단히 표현이 가능한 것 같아요. 찾아보니 Counter가 내부적으로 각 문자의 등장 횟 수를 dict 타입으로 반환하고, dict 타입은 == 연산자로 동일 비교가 가능하네요.
| if len(s) != len(t): | |
| return False | |
| counter = Counter(s) | |
| for char in t: | |
| if counter[char] >= 1: | |
| counter[char] -= 1 | |
| else: | |
| return False | |
| return True | |
| # s가 "apple" 일 때, Counter({'p': 2, 'a': 1, 'l': 1, 'e': 1}) | |
| return Counter(s) == Counter(t) |
There was a problem hiding this comment.
@dahyeong-yun 오오 이런 방법도 있네요. 파이썬은 == 으로 비교하면 참조가 아니라 값으로 비교하는 특성이 있군요. 감사합니다 ㅎㅎ!!
| answer[j] *= suffix | ||
| suffix *= nums[j] | ||
|
|
||
| return answer |
There was a problem hiding this comment.
시간이 얼마 안 남아서 남은 것들 후딱 풀겠습니다. 늦은 시간인데도 확인해주셔서 감사해요ㅠㅠ!
dahyeong-yun
left a comment
There was a problem hiding this comment.
한번에 올리려고 했는데, comment를 올리면 바로 올라가 버리는군요 ^^; 코드 살펴보면서 파이썬이나 간결함에 대해 배울 수 있어서 좋았습니다. 늦은 시간 까지 고생 많으세요! 오늘 더 확인은 어려울 것 같아 미리 승인 드립니다. 남은 문제도 화이팅이에요!
@dahyeong-yun 파이썬 재치있는 언어 같아요. 다 풀고 자바 코드도 구경하러 가겠습니다! 늦은 시간인데도 검토해주셔서 감사합니다. 다음주도 파이팅하세요!! |
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Two Pointers, Binary Search, Hash Map / Hash Set
- 설명: 정렬된 배열에서 하나의 포인터를 고정하고 나머지 두 포인터를 양 끝에서 좁혀가며 합이 목표값(0)이 되도록 탐색하는 패턴이다. 중복 제거를 위해 포인터를 움직이며 검사한다. 추가로 간접적으로 정렬과 조건 비교를 이용하는 두 포인터의 결합 방식이다.
📊 시간/공간 복잡도 분석
| 복잡도 | |
|---|---|
| Time | O(n^2) |
| Space | O(1) |
피드백: 정렬로 정렬된 배열에서 두 포인터를 움직이며 모든 해를 탐색한다. 중복 제거 로직이 포함되어 있다.
개선 제안: 현재 구현이 충분히 효율적이며, 필요 시 초기 i 반복에서 nums[i]가 양수인 경우의 조기에 종료하는 등의 미세 최적화를 고려할 수 있다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
There was a problem hiding this comment.
결과는 공간 복잡도에 포함시키지 않나보네요

답안 제출 문제
작성자 체크 리스트
In Review로 설정해주세요.검토자 체크 리스트
Important
본인 답안 제출 뿐만 아니라 다른 분 PR 하나 이상을 반드시 검토를 해주셔야 합니다!